import MarkdownIt from "markdown-it";
import hljs from "highlight.js";

export const md = MarkdownIt({
  html: true,
  linkify: true,
  typographer: true,
  highlight(str, lang) {
    if (lang && hljs.getLanguage(lang)) {
      try {
        return hljs.highlight(str, { language: lang }).value;
      } catch (_) {
        console.error(_);
      }
    }
    return ""; // 使用默认转义
  },
});

/**
 * 增量渲染
 * @param raw   当前全文（含最新 delta）
 * @param prevHtml 上一次渲染出的 html
 * @returns 新的 html
 */
export function renderDelta(raw: string, prevHtml: string): string {
  // 整篇重新渲染（markdown-it 很快，200KB 内无压力）
  // 如果追求极致，可记录 token 长度做切片，这里保持简单
  console.log(prevHtml);
  return md.render(raw);
}
